bitkeeper revision 1.122.1.1 (3e6dd2571tuS-UOLoEX2Z4iIxMPlxA)
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Tue, 11 Mar 2003 12:11:03 +0000 (12:11 +0000)
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Tue, 11 Mar 2003 12:11:03 +0000 (12:11 +0000)
pci.h, perfc.c:
  Fixed PCI DMA code -- a fake virtual address of NULL is actually valid.

BitKeeper/etc/logging_ok
xen/common/perfc.c
xen/include/asm-i386/pci.h

index cc166e63588c28ffe70c9a417d7bc1f5b02f5d44..4998459b721725bdf236eea7ffed14a4a970e424 100644 (file)
@@ -6,6 +6,7 @@ bd240@boulderdash.cl.cam.ac.uk
 iap10@labyrinth.cl.cam.ac.uk
 kaf24@labyrinth.cl.cam.ac.uk
 kaf24@plym.cl.cam.ac.uk
+kaf24@scramble.cl.cam.ac.uk
 kaf24@striker.cl.cam.ac.uk
 lynx@idefix.cl.cam.ac.uk
 rn@wyvis.camb.intel-research.net
index 55554eba7050450530b80bfa8d8ecd3eac12a700..6b7e9f2af305c4ab3cd38bc0b4e6cb38d15aecb0 100644 (file)
@@ -5,6 +5,8 @@
 #include <xeno/perfc.h>
 #include <xeno/keyhandler.h> 
 
+#undef  PERFCOUNTER
+#undef  PERFCOUNTER_ARRAY
 #define PERFCOUNTER( var, name ) "[0]"name"\0",
 #define PERFCOUNTER_ARRAY( var, name, size )  "["#size"]"name"\0",
 
index 1ffade8914be1fb98cb9c15ca0f30e671c17bb4b..a38bef4986a911f58e8225fd9babc04bb74764b8 100644 (file)
@@ -151,17 +151,17 @@ static inline int pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg,
        for (i = 0; i < nents; i++ ) {
                if (sg[i].address && sg[i].page)
                        out_of_line_bug();
-
-               /* not worth checking since NULL is ok says SMH */
 #if 0
-               else if (!sg[i].address && !sg[i].page)
+               /* Invalid check, since address==0 is valid. */
+               else if (!sg[i].address && !sg[i].page)
                        out_of_line_bug();
 #endif
  
-               if (sg[i].address)
-                       sg[i].dma_address = virt_to_bus(sg[i].address);
-               else
+               /* XXX Switched round, since address==0 is valid. */
+               if (sg[i].page)
                        sg[i].dma_address = page_to_bus(sg[i].page) + sg[i].offset;
+               else
+                       sg[i].dma_address = virt_to_bus(sg[i].address);
        }
  
        flush_write_buffers();